#ifndef __M__LOGMSG_H__
#define __M__LOGMSG_H__

/*
    日志消息类的设计
        1. 日志的输出时间（过滤日志输出时间）
        2. 日志器名称（支持多日志器同时使用）
        3. 线程ID（过滤出错的线程）
        4. 源文件名称（定位文件）
        5. 源代码行号（定位出现错误的具体位置）
        6. 日志等级（进行日志过滤分析）
        7. 日志主体消息
*/

#include "util.hpp"
#include "logLevel.hpp"
#include <iostream>
#include <string>
#include <thread>

namespace Yohifo
{
    // 使用结构体，方便外部访问
    struct LogMessage
    {
        LogMessage()
        {
        }

        LogMessage(const std::string &logger, const std::string &file,
                   const size_t &line, const LogLevel::Value &level, const std::string &msg)
            : _ctime(Util::Date::getTime()), _logger(logger), _tid(std::this_thread::get_id()), _file(file), _line(line), _level(level), _payload(msg)
        {
        }

        time_t _ctime;
        std::string _logger;  // 日志器名称
        std::thread::id _tid; // 线程ID
        std::string _file;
        size_t _line;
        LogLevel::Value _level; // 日志等级
        std::string _payload;   // 日志主体消息
    };
}

#endif